package com.item.model;

import com.item.model.config.KeyPairConfig;
import com.item.model.util.EncryptionUtil;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.HashMap;
import java.util.Map;

/**
 * EncryptionUtil加密解密工具类的测试使用
 * 1.加密
 * 2.解密
 * 3.验证签名
 */
@SpringBootTest
public class DDD {

    @Autowired
    KeyPairConfig keyPairConfig;

    @Test
    public void test1() throws Exception {

        //乙方发送公钥给甲方
        //甲方发送公钥给乙方

        System.out.println("================密钥对构造完毕,开始进行加密数据的传输=============");
        //甲方需要传输给乙方的文本
        String str="aattaggcctegthththfef/aat.mp4";

        Map map=new HashMap<String, String>();
        map.put("data",str);

        // 甲方用乙方公钥加密data,用自己的私钥做数据签名
        Map sdf = EncryptionUtil.cipherData(map, keyPairConfig.getZhxPrivateKey(), keyPairConfig.getAaaPublicKey());

        System.out.println(sdf);
        System.out.println("================甲方发送完毕,乙方接收到数据=============");

        //乙方收到加密map，用乙方自己的私钥解密  获取报文data
        //解密数据
        Map<String, String> dataMap = null;
        try {
            dataMap = EncryptionUtil.unCipherPassAndDate(sdf.get("data").toString(), sdf.get("keyPass").toString(), keyPairConfig.getAaaPrivateKey());
        }catch (Exception e){
            e.printStackTrace();
        }
        System.out.println("=========解密完成============");
        assert dataMap != null;
        for (String s:dataMap.keySet()){
            String values = dataMap.get(s);
            System.out.println("key="+s+"   "+"value="+values);
        }
        String param = dataMap.get("param");

        boolean verify = EncryptionUtil.verify(param, sdf.get("sign").toString(), keyPairConfig.getZhxPublicKey());

        System.out.println("乙方接收到报文后，验证数据是否是甲方发送的: "+verify);

    }
}
